#include <QByteArray>
#include <QFile>
#include <QDebug>

QByteArray parseHexFile(const QString &filePath)
{
    QFile file(filePath);
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug() << "Failed to open HEX file:" << file.errorString();
        return QByteArray();
    }

    QByteArray binaryData;
    QTextStream in(&file);
    while (!in.atEnd())
    {
        QString line = in.readLine().trimmed();
        if (line.startsWith(":"))
        {
            // 解析HEX行（这里只处理最简单的情况，忽略校验和等）
            bool ok;
            int len = line.mid(1, 2).toInt(&ok, 16);
            int addr = line.mid(3, 4).toInt(&ok, 16);
            int type = line.mid(7, 2).toInt(&ok, 16);

            if (ok && type == 0)
            { // 数据记录
                QString dataStr = line.mid(9, len * 2);
                QByteArray data = QByteArray::fromHex(dataStr.toUtf8());
                // 根据需要处理地址和数据（例如，将数据写入特定内存地址）
                // 在这里，我们直接将数据添加到binaryData中
                binaryData.append(data);
            }
        }
    }

    file.close();
    return binaryData;
}

